实际简单的 Monad 解释
Functor 的好处是:它让我们能用同样的方式操作不同的「容器型别」,想像成一个「装值的盒子」,它允许我们对盒子里的值进行运算,但同时又保留了盒子的结构。 Functor 「提供了方式在容器里操作值」,遵循同一性(Identity)与合成性(Composition)。
Functor 的好处是:它让我们能用同样的方式操作不同的「容器型别」,想像成一个「装值的盒子」,它允许我们对盒子里的值进行运算,但同时又保留了盒子的结构。 Functor 「提供了方式在容器里操作值」,遵循同一性(Identity)与合成性(Composition)。
从先前 Functor 的概念出发,Functor 的 `map` 只能作用在数值上,而不能是「存在于容器中的数值」上,所以才需要 Applicative Functor,一种比 Functor 更多功能的结构,除了满足 Functor 的功能外还能「让盒子里的函数作用(apply)到另一盒子的值」。
一种代码风格,着重于函式的组合关系而非具体资料,定义函式时不显式提其参数(points),而是透过函式组合与高阶函式来表达资料流动。可以减少不必要的命名保持代码简洁与达成更好的通用组合性,但是额外的抽象须被理解与熟悉。透过两个实际案例熟悉 Pointfree 开发风格。
我不是数学家也对于范畴论没有太大兴趣,但它深刻的与 Functional Programming 进阶理念挂勾,透过实战了解开发层面这些理论可以如何撰写更好维护的程式。 Functor 是一种具有 map 方法的结构,允许对其中的值进行转换同时保持结构不变、让函数可以基于容器进行组合,意味着可以被用于封装副作用或情境。
柯里化就是将使用多个参数的函式转换成一系列使用一个参数的函式,用不同的思考方式来撰写函式,藉由将一个大函式分解成很多仅使用一个参数的函式,打造可被重复利用与轻松除错的函式,透过实际制作三明治函式案例简白的说明柯里化的概念。
写程序久了会发现编写干净的可被维护的程序是一件相当困难的事情,其中一个造成维护困难的原因是因为「函数除外并返回结果除了过程中产生变化对其他的程序产生影响」,换句话说问题就是「不需要的结果,让程序变得捉摸不定理解难以」,应该纯粹了解函数的定义以及如何使用,以便更进一步编写干净的代码。